package com.javacv.plus.core.processor;

/**
 * 处理步骤接口
 * 使用责任链模式组织处理步骤
 * 
 * @param <T> 处理器类型
 * @param <R> 结果类型
 */
public interface ProcessorStep<T, R> {

    /**
     * 执行处理步骤
     * 
     * @param processor 处理器实例
     * @param context 处理上下文
     * @return 处理结果
     * @throws Exception 处理异常
     */
    R execute(T processor, ProcessorContext context) throws Exception;

    /**
     * 获取步骤名称
     */
    String getStepName();

    /**
     * 是否启用该步骤
     */
    default boolean isEnabled() {
        return true;
    }

    /**
     * 获取步骤优先级，数值越小优先级越高
     */
    default int getPriority() {
        return 100;
    }
} 